package com.itheima.service;

import com.itheima.entity.PageResult;
import com.itheima.exceptions.BusinessException;
import com.itheima.pojo.Menu;
import com.itheima.pojo.User;

import java.util.List;
import java.util.Set;

/**
 * @author W.J.Y
 */
public interface UserService {

    /**
     * 根据用户名查询用户信息
     * @param username  用户名
     * @return  用户实例
     */
    User findUserByUserName(String username);


    /**
     * 新增用户
     * @param user  用户实例
     * @throws BusinessException    可能出现的业务异常
     */
    void add(User user) throws BusinessException;

    /**
     * 编辑用户
     * @param user 用户实例
     * @throws BusinessException    可能出现的业务异常
     */
    void update(User user) throws BusinessException;

    /**
     * 查找全部用户
     * @return  全部用户
     */
    List<User> findAll();

    /**
     * 根据ID删除用户
     * @param id    用户ID
     * @throws BusinessException 业务异常
     */
    void delete(int id) throws BusinessException;


    /**
     * 分页查询所有用户信息
     * @param pageNum   当前页
     * @param pageSize  每页显示条数
     * @param queryString   查询语句
     * @return  返回的分页参数及结果
     */
    PageResult findPage(int pageNum, int pageSize, String queryString);

    /**
     * 根据用户ID查询用户信息
     * @param id    用户ID
     * @return  用户信息
     */
    User findById(int id);

    /**
     * 更新用户登录次数
     * @param user  用户数据
     */
    void updateLoginCount(User user);

    /**
     * 根据用户名拉取菜单数据
     * @param username  用户名
     * @return  菜单数据
     */
    List<Menu> findMenusByUserName(String username);

    /**
     * 修改密码的方法
     * @param password  修改后的密码
     */
    void changePassword(String password,String username);
}
